💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    2. 모델 메타 클래스 | ✅ 저자: 이유정(박사)

    모델에 대한 메타정보(정보에 대한 정보)”를 담는 클래스입니다. 모델이 "어떻게 저장될지, 어떻게 보일지, 어떤 규칙을 가질지" 정해주는 설정 모음

    class Menu(models.Model):
        name = models.CharField(max_length=100)
    
        class Meta:
            db_table = "menu"  # 테이블 이름을 "menu"로 하자!
            verbose_name = "메뉴"  # 관리자에서 예쁘게 보이게!
    

    Django는 모델 이름이 아니라
    “앱이름 + 모델이름” 조합으로 DB 테이블 이름을 자동으로 만듭니다. db_table = "menu"를 주면 테이블 이름이 menu로 바뀝니다.

    • 역할: 실제 DB에서 이 모델의 테이블 이름을 직접 지정할 수 있어요.
    • 예: db_table = "products" → 실제 DB 테이블명이 products로 생성됨

    • 역할: 두 개 이상의 필드를 묶어서 인덱스를 생성해 성능을 올려요.
    • 예: ["driver", "restaurant"] → 이 두 필드를 자주 같이 검색할 때 유리함

    • 역할: 두 개 이상의 필드를 묶어서 중복 없이 유일하게 유지해요.
    • 예: 한 driver가 동일한 restaurant에 중복해서 등록되지 않도록 막는 용도

    • 역할: 보다 복잡한 제약 조건(조건부 유일성, 값 범위 등)을 직접 설정할 수 있어요.
    • 예시:
      • username + country 조합이 유일해야 함
      • age는 0 이상 120 이하만 가능

    • DB 테이블을 만들지 않고, 다른 모델에서 상속해서 재사용만 하겠다는 뜻
    • 상속 전용 공통 모델을 만들고 싶을 때 사용

    • 역할: 이 모델을 Django가 마이그레이션으로 관리할지 여부 결정
    • False이면 Django가 이 테이블을 직접 만들지 않음 (이미 존재하는 테이블 연결할 때 사용)

    • 역할: 사용자에게 부여할 추가 권한 이름을 직접 지정할 수 있어요.
    • 예: "can_deliver_pizzas" → “피자 배달 권한”

    • 역할: Django가 자동으로 만드는 권한 종류를 설정해요.
    • 기본값: ['add', 'change', 'delete', 'view']
    • 예: default_permissions = [('view',)] → 조회만 허용

    • 역할: DB 테이블에 주석(설명)을 달 수 있어요.
    • 예: 테이블 목적이나 의미를 DB 관리자가 볼 수 있게 설명 가능

    • 역할: DB 테이블에 주석(설명)을 달 수 있어요.
    • 예: 테이블 목적이나 의미를 DB 관리자가 볼 수 있게 설명 가능

    TOP
    preload preload